3.6.2 マスクレジスタ
マスクレジスタは通常のデータではなくフラグを保持する特殊なPEメモリであり、PEメモリ書き込み時または演算器からの演算結果出力時に、動的に決定した箇所について書き込みのスキップまたは演算結果のゼロフラッシュが可能である。
これにより疑似的な条件分岐を実現できる。
マスクレジスタは 32 エントリ存在し、 15 エントリは可変であり、残りは固定値でマスク作用時の読み出し専用である。
1 エントリはサイクル方向に 4 サイクル分、ワード方向に 4 ビットで計 16 ビットからなる。
書き込みマスク適用時には、対応するエントリが 1 なら書き込みを行い、 0 なら書き込みを行わない。
ゼロフラッシュマスク適用時には、対応するエントリが 1 なら何もせず、 0 なら書き込み前に値を 0 にする。
「サイクル方向」とは、マスクレジスタへの書き込み時と読み出し時ともに、 1 ステップのうち何サイクル目かによって異なるエントリにアクセスするということを意味する。
「ワード方向」の意味はマスク作用時に選択できるマスク作用語長によって異なる。
マスク作用語長が長語のとき、 1 サイクルでPE内データパスを通る 2 長語について、MSB側 1 長語を 4 半語とみなして 4 ビットのフラグを対応させてマスクを作用させ、LSB側 1 長語には干渉しない。
マスク作用語長が 2 長語のとき、同じ 2 長語について、 4 単語とみなしてマスクを作用させる。
固定値エントリのアドレスと内容は以下である*^3 。
アドレス0: All 1 (書き込みマスクについては常に書き込みを行う、演算器ゼロフラッシュにおいては
一切ゼロフラッシュを行わない)
アドレス 16 以降:アドレス値の下位 4 ビットがそのまま、上位ビットから順に各サイクルのマスクフラグになる。
ワード方向にはすべて同じ値である。
アドレス 1 から 15 が可変エントリとなる。
可変エントリにマスクフラグを書き込み可能な演算器はALUとMAUである。
出力フラグ値はそれぞれの演算器の命令式の箇所で解説する。
書き込んだマスクフラグは直後のステップから利用可能である。
書き込みマスクとゼロフラッシュマスクは同時に指定可能である。ただし、それぞれで異なるエントリを読み出すことはできない。
3.6.2.1 書き込みマスク適用
3.6.2.2 ゼロフラッシュマスク適用